プログラム 自動化

~作譜の自動化~

私が今回自動化に挑戦したのは「作譜」です。
私はアカペラサークルに所属しており、そこでやっているのが「アレンジ」。
その「アレンジ」を効率よくやりたい!!という願望を叶えるために思いついたのが「作譜の自動化」です!

アレンジとは

アレンジとは、普通の音楽を声だけで演奏できるように楽譜に起こして作譜していく作業です。
~アレンジ完成までの工程~
1,メロディーの耳コピ&音符に起こして入力
2.コードを調べて(耳コピして)入力
3.ベースを入力
4.全体を見て人間が歌えるようにアレンジしていく。
5.微調整
完成!!

ここで、ものすごく時間がかかり、かつ無駄なのは1,2,3の作業。
アレンジ能力はほぼいらないのに、コピペができない。また、一音一音入力していくためめっちゃ時間がかかる。
この作業を自動化できたら、早く楽譜を用意できてかつ練習に取り組むことができるし、多くの経験を積むことができる!
ということで「作譜の自動化」にチャレンジしました。

自動化完成までのプロセス

1.youtubeの音楽動画から音声だけを抽出(クリア!)
2.音声をメロディーだけのファイルにする(未完成)
3.musescore(アレンジに使用するソフト)と連携して、楽譜に起こしてもらう(未完成)

1のプログラム

from pytube # ライブラリをインストールimport YouTube # YouTubeの動画URLを指定 url = 'https://www.youtube.com/watch?v=IVbY5edMfCA' # YouTubeオブジェクトを作成 yt = YouTube(url) # 音声ストリームを選択(ビデオではなく音声のみ) stream = yt.streams.filter(only_audio=True).first() # 音声を指定のフォルダにダウンロード output_folder = 'C:/Users/suzyt/OneDrive/music' # バックスラッシュまたは正斜線を使用 stream.download(output_path=output_folder) print('音声をダウンロードしました。')


ここで、youtubeの音声だけのファイル(mp4)ができた。
2のプログラム

import librosa import numpy as np# numpyをインストール import soundfile as sf# soundfileをインストール # WAVファイルのパス wav_file = 'xbp/de12/python/aaa.wav' # 正しいファイル名を指定 # 音声ファイルを読み込む y, sr = librosa.load(wav_file) # 主旋律を抽出 melody, _ = librosa.piptrack(y=y, sr=sr) melody = np.nan_to_num(melody) # NaNを0に置き換える # 主旋律を保存 output_file = 'C:/Users/suzyt/mygit/xbp/de12/python/aaa.wav' sf.write(output_file, melody, sr) print('主旋律を抽出し、保存しました。')


ここで、1でできたmp4ファイルだとプログラムが作動しないことが発覚。そこでmp4ファイルをwavファイルに変換するプログラムを作成。

from pydub import AudioSegment # MP4ファイルのパス # mp4_file = "C:/Users/suzyt/OneDrive/music/CinderellaBoy.mp4" # 正しいファイル名を指定 mp4_file = "C:/Users/suzyt/mygit/xbp/de12/python/CinderellaBoy.mp4" # WAVファイルのパス(出力先) # output_wav_file = 'C:/Users/suzyt/OneDrive/music/' # 正しいファイル名を指定 output_wav_file = 'C:/Users/suzyt/mygit/xbp/de12/python/aaa' # 正しいファイル名を指定 # MP4ファイルをWAVに変換 audio = AudioSegment.from_file(mp4_file, format="mp4") audio.export(output_wav_file, format="wav") print('MP4ファイルをWAVに変換しました。')


しかし、これがうまく作動せず…。そこで、このサイト を参考に、「ffmpeg」をインストール。
結果、一度はうまく作動しwavファイルが作成されたが、数日後もう一度やってみると作動せず、
作成したはずの音声wavファイルも動かなくなっていたためそこでできなくなりました。
一応、chatgptにpythonで音声から楽譜に起こすプログラムを作れるか聞いたところ、
「高度な技術が必要であり大変複雑なコードとなるため、自分で聞いて作譜した方が善い」と出てきました。